package day04;

/**
 * @author aiPlusPlus
 * @version 1.0
 * @date 2023/2/4 13:27
 */

/**
 * 给你一个正方形矩阵 mat，请你返回矩阵对角线元素的和。
 *
 * 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。
 *
 *
 *
 * 示例  1：
 *
 *
 *
 * 输入：mat = [[1,2,3],
 *             [4,5,6],
 *             [7,8,9]]
 * 输出：25
 * 解释：对角线的和为：1 + 5 + 9 + 3 + 7 = 25
 * 请注意，元素 mat[1][1] = 5 只会被计算一次。
 * 示例  2：
 *
 * 输入：mat = [[1,1,1,1],
 *             [1,1,1,1],
 *             [1,1,1,1],
 *             [1,1,1,1]]
 * 输出：8
 * 示例 3：
 *
 * 输入：mat = [[5]]
 * 输出：5
 */
public class Solution3 {
    public int diagonalSum(int[][] mat) {
        int n = mat.length,m = mat[0].length;
        int leftN = 0,leftM = 0,rightN = 0,rightM = m-1;
        int sum = 0;
        while (leftN<n&&leftM<m&&rightN<n&&rightM>=0){
            if(leftN==rightN&&leftM==rightM){
                sum+=mat[leftN][leftM];
            }else {
                sum+=mat[leftN][leftM];
                sum+=mat[rightN][rightM];
            }
            leftN++;
            leftM++;
            rightN++;
            rightM--;
        }
        return sum;
    }
}
